#include <stdio.h>
#include <sys/types.h>
#include <sys/shm.h>
#include <sys/ipc.h>

#define PROJ_PATH "/home/china"
#define PROJ_ID 115200

/*
    key_t ftok(const char *pathname, int proj_id)：
        指定路径，任意整数id，创建一个唯一key
        只要路径，id相同，那么创建的key就是唯一且相同
    int shmget(key_t key, size_t size, int shmflg)：
        针对key，创建/打开指定大小的共享内存
        返回共享区域id
    int shmctl(int shmid, int cmd, struct shmid_ds *buf)：
        通过id，删除这个共享内存
        后两个参数固定为IPC_RMID NULL
*/
int main()
{
    //1.创建一个system v ipc对象 key
    key_t key = ftok(PROJ_PATH, PROJ_ID);
    if (key == -1)
    {
        perror("ftok error");
        return -1;
    }

    //2.创建或打开system v共享内存
    int shm_id = shmget(key, 1024, IPC_CREAT | 0777);
    if (shm_id == -1)
    {
        perror("shmget error");
        return -1;
    }
    printf("shmget success!\n");

    //3.删除共享内存
    shmctl(shm_id, IPC_RMID, NULL);

}